package com.tax.infrastructure.statemachine;

/**
 * Generic strategy interface used by a state machine to response
 * events by executing an {@code Action} with a {@link StateContext}
 */
public interface Action<S, E, C> {

    /**
     * execute
     *
     * @param from
     * @param to
     * @param event
     * @param context
     */
    public void execute(S from, S to, E event, C context);
}
